// RAP [rh] quick access disabled
///*******************************************************************************
// * Copyright (c) 2006, 2010 IBM Corporation and others.
// * All rights reserved. This program and the accompanying materials
// * are made available under the terms of the Eclipse Public License v1.0
// * which accompanies this distribution, and is available at
// * http://www.eclipse.org/legal/epl-v10.html
// *
// * Contributors:
// *     IBM Corporation - initial API and implementation
// *******************************************************************************/
//
//package org.eclipse.ui.internal.quickaccess;
//
//
//import org.eclipse.jface.resource.ImageDescriptor;
//
///**
// * @since 3.3
// * 
// */
//public abstract class QuickAccessElement {
//
//	static final String separator = " - "; //$NON-NLS-1$
//
//	private static final int[][] EMPTY_INDICES = new int[0][0];
//	private QuickAccessProvider provider;
//
//	/**
//	 * @param provider
//	 */
//	public QuickAccessElement(QuickAccessProvider provider) {
//		super();
//		this.provider = provider;
//	}
//
//	/**
//	 * Returns the label to be displayed to the user.
//	 * 
//	 * @return the label
//	 */
//	public abstract String getLabel();
//
//	/**
//	 * Returns the image descriptor for this element.
//	 * 
//	 * @return an image descriptor, or null if no image is available
//	 */
//	public abstract ImageDescriptor getImageDescriptor();
//
//	/**
//	 * Returns the id for this element. The id has to be unique within the
//	 * QuickAccessProvider that provided this element.
//	 * 
//	 * @return the id
//	 */
//	public abstract String getId();
//
//	/**
//	 * Executes the associated action for this element.
//	 */
//	public abstract void execute();
//
//	/**
//	 * Return the label to be used for sorting and matching elements.
//	 * 
//	 * @return the sort label
//	 */
//	public String getSortLabel() {
//		return getLabel();
//	}
//
//	/**
//	 * @return Returns the provider.
//	 */
//	public QuickAccessProvider getProvider() {
//		return provider;
//	}
//
//	/**
//	 * @param filter
//	 * @return
//	 */
//	public QuickAccessEntry match(String filter,
//			QuickAccessProvider providerForMatching) {
//		String sortLabel = getLabel();
//		int index = sortLabel.toLowerCase().indexOf(filter);
//		if (index != -1) {
//			return new QuickAccessEntry(this, providerForMatching,
//					new int[][] { { index, index + filter.length() - 1 } },
//					EMPTY_INDICES);
//		}
//		String combinedLabel = (providerForMatching.getName() + " " + getLabel()); //$NON-NLS-1$
//		index = combinedLabel.toLowerCase().indexOf(filter);
//		if (index != -1) {
//			int lengthOfElementMatch = index + filter.length()
//					- providerForMatching.getName().length() - 1;
//			if (lengthOfElementMatch > 0) {
//				return new QuickAccessEntry(this, providerForMatching,
//						new int[][] { { 0, lengthOfElementMatch - 1 } },
//						new int[][] { { index, index + filter.length() - 1 } });
//			}
//			return new QuickAccessEntry(this, providerForMatching,
//					EMPTY_INDICES, new int[][] { { index,
//							index + filter.length() - 1 } });
//		}
//		String camelCase = CamelUtil.getCamelCase(sortLabel);
//		index = camelCase.indexOf(filter);
//		if (index != -1) {
//			int[][] indices = CamelUtil.getCamelCaseIndices(sortLabel, index, filter
//					.length());
//			return new QuickAccessEntry(this, providerForMatching, indices,
//					EMPTY_INDICES);
//		}
//		String combinedCamelCase = CamelUtil.getCamelCase(combinedLabel);
//		index = combinedCamelCase.indexOf(filter);
//		if (index != -1) {
//			String providerCamelCase = CamelUtil.getCamelCase(providerForMatching
//					.getName());
//			int lengthOfElementMatch = index + filter.length()
//					- providerCamelCase.length();
//			if (lengthOfElementMatch > 0) {
//				return new QuickAccessEntry(
//						this,
//						providerForMatching,
//						CamelUtil.getCamelCaseIndices(sortLabel, 0, lengthOfElementMatch),
//						CamelUtil.getCamelCaseIndices(providerForMatching.getName(),
//								index, filter.length() - lengthOfElementMatch));
//			}
//			return new QuickAccessEntry(this, providerForMatching,
//					EMPTY_INDICES, CamelUtil.getCamelCaseIndices(providerForMatching
//							.getName(), index, filter.length()));
//		}
//		return null;
//	}
//}
